package demo2;

public class Main {
    public static void main(String[] args) {
        System.out.println("重点1：泛型类在创建对象的时候，来指定操作的具体数据类型");
        System.out.println("Generic<String>::");
        //重点1：泛型类在创建对象的时候，来指定操作的具体数据类型
        Generic<String> strGeneric = new Generic<>();
        System.out.println("setKey+getKey:");
        strGeneric.setKey("你们食不食人啊，盗窃会不会！");
        String key1 = strGeneric.getKey();
        System.out.println(key1);

        System.out.println("--------------------------");
        System.out.print("Generic<Integer>::\nsetKey+getKey:\n树脂");
        Generic<Integer> intGeneric = new Generic<>();
        intGeneric.setKey(666);
        Integer key2 = intGeneric.getKey();
        System.out.println(key2);

        System.out.println("--------------------------");
        System.out.println("重点2：同一泛型类，根据不同数据类型创建的对象，本质上是同一类型(它们的地址相同)");
        //重点2：同一泛型类，根据不同数据类型创建的对象，本质上是同一类型(它们的地址相同)
        System.out.println("strGeneric.getClass() == intGeneric.getClass()::");
        System.out.println(strGeneric.getClass() == intGeneric.getClass());



        System.out.println("--------------------------");
        System.out.println("重点3：泛型类在创建对象时，没有指定类型，将按照Object类型操作");
        System.out.println("Generic generic1::");
        //重点3：泛型类在创建对象时，没有指定类型，将按照Object类型操作
        Generic generic1 = new Generic("荔枝");
        Object key = generic1.getKey();
        System.out.println(key);

        System.out.println("--------------------------");
        System.out.println("重点4：泛型类不支持基本数据类型。只能是类类型");
        //重点4：泛型类不支持基本数据类型。
        //Generic<int> generic2 = new Generic<int>();  错误写法


    }
}
